package PaqServidor;

import PaqServidor.Alumno;
import PaqServidor.Pregunta;
import java.util.ArrayList;

public class ExamenProfesor {
	//private String id;
    private String nombre;
    public String asignatura;
    private String fecha_inicio; 
    private String fecha_fin;
    private short numPreguntas;
    //public ArrayList<Alumno> lalumnos = new ArrayList<Alumno>();
    public ArrayList<Pregunta> lpreguntas = new ArrayList<Pregunta>();

        
        /**
         * 
         * Constructor con parametros de la clase  
         */
        public ExamenProfesor(String _fecha_ini, String _fecha_fin, short numPreg, String asig, ArrayList<Pregunta> preguntas)
        {
            fecha_inicio = _fecha_ini;
            fecha_fin = _fecha_fin;
            numPreguntas = numPreg;
            lpreguntas = preguntas;
            asignatura = asig;
            nombre = asig + fecha_inicio;
        }
        
        /**
         * 
         * Constructor sin parametros de la clase  
         */
        public ExamenProfesor()
        {
        }
        /**
         * 
         * Descripción: método para obtener el valor del atributo id;
         * @return : devuelve el valor de id
         */
	/*public String getId() {
		return id;
	}*/

        /**
         * 
         * Descripción: método para establecer el valor del atributo id.
         * @param id: nuevo valor que tendrá el atributo id. 
         */
	/*public void setId(String id) {
		//throw new UnsupportedOperationException();
            this.id = id;
	}*/

         /**
         * 
         * Descripción: método para obtener la fecha_inicio del examen;
         * @return : devuelve el valor de la fecha_inicio
         */
	public String getFecha_inicio() {
		//throw new UnsupportedOperationException();
                return fecha_inicio;
	}

        /**
         * 
         * Descripción: método para establecer el valor de la fecha_inicio.
         * @param fecha_inicio: nuevo valor que tendrá la fecha_inicio. 
         */
	public void setFecha_inicio(String fecha_inicio) {
		//throw new UnsupportedOperationException();
            this.fecha_inicio = fecha_inicio;
	}

	/**
         * 
         * Descripción: método para obtener la fecha_fin del examen;
         * @return : devuelve el valor de la fecha_fin
         */
        public String getFecha_fin() {
		//throw new UnsupportedOperationException();
                return fecha_fin;
        }

        /**
         * 
         * Descripción: método para establecer el valor de la fecha_fin.
         * @param fecha_fin: nuevo valor que tendrá el atributo fecha_fin. 
         */
	public void setFecha_fin(String fecha_fin) {
		//throw new UnsupportedOperationException();
                this.fecha_fin = fecha_fin;
        }
        
        public String getNombre()
        {
            return nombre;
        }
        /*
	public void cleanArrayPreguntas() {
		throw new UnsupportedOperationException();
	}

	public void addPreguntaArray(Pregunta pregunta) {
		throw new UnsupportedOperationException();
	}
        */
	
        /**
         * 
         * Descripción: método para generar el Examen del Alumno
         * @return: Devuelve el examen del Alumno generado. 
         */
        public ExamenAlumno generarExamenAlumno() {
		//throw new UnsupportedOperationException();
                ExamenAlumno examen;
                
                ArrayList<Pregunta> listaPreguntas = new ArrayList();
                
                //genera la lista de con las preguntas del alumno.
                listaPreguntas = randomPreguntas();
                
                examen = new ExamenAlumno(listaPreguntas);
                return examen;
	}
 
        /**
         * 
         * Descripción: método para crear la lista de las preguntas del examen del alumno
         * @return: Devuelve la lista de las preguntas del examen del alumno. 
         */
	public ArrayList<Pregunta> randomPreguntas() {
		 //throw new UnsupportedOperationException();
               int i; 
               int preg;
               ArrayList<Pregunta> preguntas = new ArrayList<Pregunta>();
               
               int tam=lpreguntas.size();
                
               for(i=0; i<numPreguntas; i++)
               {
                   preg = (int)(Math.random()%tam);
                   preguntas.add(lpreguntas.get(preg));
               }
               
                return preguntas;
	}
        
        /*public PaqCORBA.ExamenProfesor toCORBA()
        {
            PaqCORBA.ExamenProfesor result = new PaqCORBA.ExamenProfesor(id, fecha_inicio, fecha_fin, numPreguntas);
            return result;
        }*/
}